package com.douqu.game.core.util;

import com.douqu.game.core.factory.ConfigFactory;
import com.douqu.game.core.yjsdk.utils.HTTPHelper;
import com.douqu.game.core.yjsdk.utils.MD5;

import java.io.IOException;
import java.net.URLEncoder;

/**
 * @author wangzhenfei
 *         2018-01-10 18:05
 */
public class YjSdkUtils {
    // 应用在易接服务获取的同步密钥
    private static final int LOGIN_RESULT_SUCCESS = 0;

    /**
     * 供客户端调用的登陆验证接口
     * @param app CP 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 游戏在易接服务器上的 ID 。
     * @param sdk 渠道在易接服务器上的 渠道在易接服务器上的 ID
     * @param uin 用户编号 ，用户登陆后由易 ，用户登陆后由易 ，用户登陆后由易 接 SDK SDK返回给客户端 。游戏 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 需要用 URLEncoder URLEncoder URLEncoderURLEncoder URLEncoder 进行 编码 ，编码 ，编码 ，编码 ，编码 ，方式为 UTF -8。
     * @param sess SessionId SessionId SessionId ，用户 ，用户 登陆后，由 登陆后，由 登陆后，由 易 接 SDK SDK返回给客户端 。游戏 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 服务器在登录验证时 需要用 URLEncoder URLEncoder URLEncoderURLEncoder URLEncoder 进行 编码 ，编码 ，编码 ，编码 ，编码 ，方式为 UTF -8。
     * @throws IOException
     */
    public static boolean checkUserLogin(String app, String sdk, String uin, String sess) throws IOException {

        StringBuilder getUrl = new StringBuilder();
        getUrl.append("http://sync.1sdk.cn/login/check.html");
        getUrl.append("?app=");
        getUrl.append(app);
        getUrl.append("&sdk=");
        getUrl.append(sdk);
        getUrl.append("&uin=");
        getUrl.append(URLEncoder.encode(uin, "UTF-8"));
        getUrl.append("&sess=");
        getUrl.append(URLEncoder.encode(sess, "UTF-8"));

        try {
            HTTPHelper.SimpleHTTPResult ret = HTTPHelper.simpleInvoke ("GET", getUrl.toString(), null, null);
            // 下面的返回值由CP服务器和客户端定义，这里的返回值只做参考用
            if (ret.code != 200) {
//                w.write("ERROR");
                return false;
            }
            if (ret.data == null || ret.data.length == 0) {
//                w.write("ERROR");
                return false;
            } else {
                String r = new String (ret.data);
                Integer i = new Integer(r);
                if (i == LOGIN_RESULT_SUCCESS) {
//                    w.write("SUCCESS");
                    return true;
                } else {
//                    w.write("ERROR");
                    return false;
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }


    public static void main(String[] args) {
        try {
            System.out.println(checkUserLogin("6B71A6867A438E20", "4ff036a13254eafe", "0", "selfServer1516331094214"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



    /**
     * 消费记录回调接口
     *
     * @param request
     * @param response
     * @throws java.io.IOException
     */
   /* public void orderCallBack(HttpServletRequest request, HttpServletResponse response) throws IOException{

        PrintWriter w = response.getWriter();
        StringBuffer sbEnc = new StringBuffer ();
        sbEnc.append ("app=");
        sbEnc.append (request.getParameter("app"));
        sbEnc.append ("&cbi=");
        sbEnc.append (request.getParameter("cbi"));
        sbEnc.append ("&ct=");
        sbEnc.append (request.getParameter("ct"));
        sbEnc.append ("&fee=");
        sbEnc.append (request.getParameter("fee"));
        sbEnc.append ("&pt=");
        sbEnc.append (request.getParameter("pt"));
        sbEnc.append ("&sdk=");
        sbEnc.append (request.getParameter("sdk"));
        sbEnc.append ("&ssid=");
        sbEnc.append (request.getParameter("ssid"));
        sbEnc.append ("&st=");
        sbEnc.append (request.getParameter("st"));
        sbEnc.append ("&tcd=");
        sbEnc.append (request.getParameter("tcd"));
        sbEnc.append ("&uid=");
        sbEnc.append (request.getParameter("uid"));
        sbEnc.append ("&ver=");
        sbEnc.append (request.getParameter("ver"));

        String sign = request.getParameter("sign");

        boolean result = MD5.encode(sbEnc + PRIVATE_KEY).equalsIgnoreCase(sign);

        if(result){
            // 此处CP可以持久化消费记录
            //st==1是支付成功，才能给用户发道具

            // 操作成功后需要返回SUCCESS告诉易接服务器已经接收成功
            w.write("SUCCESS");
        }else{
            // 返回ERROR易接服务器会根据一定的策略重新同步消费记录给CP
            w.write("ERROR");
        }
        w.flush();
        w.close();
    }
    */
}
